ここでは、Minix/X68kのインストールの手順について、自分が実際にインストールした順路を示します。ここでの用語については一般的なUNIX用語を使っているつもりなので、わからない場合はUNIX関連の書籍等を調べてください。
また、> 及び $ はそれぞれ Human-OS 上でのプロンプト、Minix/X68k 上でのプロンプトを表します。
Minix/X68kを入手します。実際これが無いと始まらない。しかし!2001年1月現在では、いろいろ探してみたがどこにもありません。(実は置いてあるほとんどのホストが既に立ち上がっていない)
そこで、以前ダウンロードしておいたものをここに置いておきますのでこれを使ってください。但し、GNU zip で圧縮してあるので解凍して使用してください。
フロッピーディスクを2HCでフォーマットします。(6枚)
しかし、ここで私は引っかかってしまった。引っかかったのは以下の3つです。
Human-OS Version 3.02以上の場合について説明します。(Version 2.XXの場合は9SCSET 3.14 Rel4を使って下さい。)
フロッピーディスクを2HCでフォーマットします。
> format /5 フロッピードライブ名:
次に、scsi.fd, root.img, usr1.img, usr2.img, ack.img, nksrc.img の各ディスクを作成する。フロッピーディスクは計6枚です。(ブートさせるだけならば scsi.fd, root.img, usr1.imgの3枚だけで良い)
fdbwr101.lzhを使って作成する場合は以下のようにします。
> fdbwr.x -d0 -n2400 -l512 < 各ファイル名
また、 rawrite [ベクタ]を使って作成する場合は以下のようにします。 (下線部が実際の入力です。また[CR]はENTERキー)
> rawrite[CR] RaWrite 1.2 - Write disk file to raw floppy diskette Enter source filename: 各ファイル名 Enter destination drive: ドライブ名 Please insert a formatted diskette into drive ドライブ名 and press -ENTER- :[CR] Reading image Writing image to drive ドライブ名 Done.
HumanのFORMATコマンドを使用して以下のように設定します。sd?? の意味ですが、最初の ? は、scsi の id 番号です。次の ? はパーティション番号です。
また、Minix/X68k において最大ブロックサイズは64MBです。これ以上のサイズは扱えないので作っても無駄です。
Part 1. Human 103M --> /dev/sd01 2. boot1 1M --> /dev/sd02 3. boot2 1M --> /dev/sd03 4. root 11M --> /dev/sd04 5. usr 64M --> /dev/sd05
scsi.fd.imgを 0 ドライブに入れて起動します。
MINIX Reading Boot Disk..... Virtual console patches copyright 1993 Hajime Murao. fdc reset Booting MINIX 1.5. Copyright 1991 Prentice-Hall, Inc. Insert ROOT diskette and hit RETURN (or specify rootdev)
すると、ブート・フロッピーディスクを吐き出して、上記のように root.img を 0 ドライブに入れるよう要求してきます。指示に従って、root.img を 0 ドライブに入れます。
Memory size = 6144K MINIX = 601K RAM disk = 1200K Available = 4345K RAM disk loaded. Please remove root diskette. Please insert /usr diskette to drive 0, then hit Enter key...
次に上記のように root.img を RAM disk にロードして root.img を抜いて usr1.img を 0 ドライブに入れるように要求されます。root.img を抜いて usr1.img を 0 ドライブに入れ、ENTER キーを押します。すると、いろんなメッセージを表示して最後に以下のようにログイン要求のメッセージが表示されます。(最後にエラーメッセージが出るけど気にしないで下さい)
これで、Minix/X68k の起動は終了です。
login:
minix 起動後は root しかログインすることが出来ません。root のパスワードは'Geheim' です。まず root でログインします。(パスワード入力時は入力した文字が表示されませんので注意して入力してください。また大文字と小文字も認識しますので注意してください。)
さて、mknod を使ってデバイスファイル /dev/sd0* を作成します。
$ mknod /dev/sd02 b 7 2 0 # boot1 $ mknod /dev/sd03 b 7 3 0 # boot2 $ mknod /dev/sd04 b 7 4 0 # root $ mknod /dev/sd05 b 7 5 0 # usr
4番目の引数は (SCSI ID * 16) + パーティション番号 です。
Minix/X68k で使用するパーティションを削除します。
$ xscsi -r 0/2 $ xscsi -r 0/3 $ xscsi -r 0/4 $ xscsi -r 0/5
再度、Minix/X68k で使用する各パーティションに指定バイト数(キロバイト単位)割り当てます。
$ xscsi -a 0/2 1024 $ xscsi -a 0/3 1024 $ xscsi -a 0/4 11264 $ xscsi -a 0/5 65536
これで、ブートメニューの表示が Human68k ではなく Minix68k になります。これを行わないで次にファイルシステムを構築するとHumanが「0で除算されました」といって起動できなくなってしまいますので注意してください。私はここでもはまりました。
さて、続いてroot と usr のファイルシステムを構築します。このときファイルシステム(MINIX-FS ver1.0)の最大ブロック数の制限で65535KB以上のファイルシステムは構築できません。
$ mkfs /dev/sd04 11264 <-- 11MB (= 11 x 1024 (KB)) $ mkfs /dev/sd05 65535 <-- 64MB - 1KB (= 64 x 1024 - 1 (KB))
さて、システムを構築するためにマウント用のディレクトリを作成します。
$ mkdir /mnt /fd0 /fd1
/dev/sd04 に root.img をコピーするために 1 ドライブに root.img を挿入する。
$ mount /dev/fd1 /fd1 <-- root.img をマウント $ mount /dev/sd04 /mnt $ cpdir -msv /fd1 /mnt $ sync; sync; sync <--- おまじないとして必ず実行してください。
/dev/sd04 はハードディスクから起動する時に root にマウントするもの、つまりシステムの本体になります。そこで起動時の設定もここで行います。
まずは、デバイスファイルの作成。
$ mknod /mnt/dev/sd02 b 7 2 0 $ mknod /mnt/dev/sd03 b 7 3 0 $ mknod /mnt/dev/sd04 b 7 4 0 $ mknod /mnt/dev/sd05 b 7 5 0
/etc/rc(/mnt/etc/rc) の書き換え。
$ cp /mnt/etc/rc.hd /mnt/etc/rc $ vi /mnt/etc/rc で '/etc/mount /dev/hd4 /usr' をコメントアウトする。 その下に '/etc/mount /dev/sd05 /usr を追加する。 $ sync; sync; sync $ umount /dev/fd1 $ eject 1 <-- root.img を取り出す
ハードディスク起動時の root にもマウント用ディレクトリを作成します。
$ mkdir /mnt/mnt /mnt/fd0 /mnt/fd1 $ umount /dev/sd04
/dev/sd05 に usr1.img 及び usr2.img をインストールします。現在 usr1.img は 0 ドライブにマウントされているので、まず usr1.img を /dev/sd05 にインストールします。
$ mount /dev/sd05 /mnt $ cpdir -msv /usr /mnt
usr2.img を /dev/sd05 にインストールするために、usr2.img を 1 ドライブに挿入して /fd1 にマウントしコピーします。
$ mount /dev/fd1 /fd1 $ cpdir -msv /fd1 /mnt $ sync; sync; sync $ umount /dev/fd1 $ umount /dev/sd05 $ eject 1
/dev/sd05(/usr)のインストールが終了したので、現在 usr1.img が /usr にマウントしているので、これをアンマウントしてから /dev/sd05 を /usr にマウントし直します。
$ sync; sync; sync $ umount /dev/fd0 $ mount /dev/sd05 /usr $ eject 0 <-- usr1.img を取り出す
ack.img を 0 ドライブに nksrc.img を 1 ドライブに挿入し、それぞれ /fd0 及び /fd1 にマウントします。
$ mount /dev/fd0 /fd0 $ mount /dev/fd1 /fd1
まず、ack.img をインストールします。既に /dev/sd05 は /usr にマウントされています。
$ cpdir -msv /fd0 /usr
次に nksrc.img をインストールし、挿入したフロッピーディスクを取り出します。
$ cpdir -msv /fd1 /usr $ sync; sync; sync $ umount /dev/fd0 $ eject 0 <-- ack.img を取り出す $ umount /dev/fd1 $ eject 1 <-- nksrc.img を取り出す
・ヘッダーファイルの修正(ルートパーティションの設定)
vi /usr/include/minix/boot.h で '#define DROOTDEV (DEV_RAM + 0)' を '#define DROOTDEV (DEV_SD0 + 4)' に修正ここでの 4 の数字の計算方法は、(SCSIのID番号 * 16) + パーティション番号で求めます。
・コンパイルおよびブートパーティション書き込み
これでカーネルの再構築の作業が終了です。shutdown を実行して電源を切れるようにしてください。$ chmem =200000 /usr/bin/make <-- 標準だとNo Memory ... といわれる場合がある $ cd /usr/src/fs $ make $ cd /usr/src/mm $ make $ cd /usr/src/kernelここで Makefile を書き換えます。今回は SCSI-HD なので Makefile の 19, 20 行目のWINI = wini, WINI2 = x6scsi のところをコメントアウト(先頭の # を取る)します。
Makefile の変更が終わったら kernel を make します。$ make sd <-- SCSI-HD ブート用イメージの作成ブート用イメージが /tmp/minix_sd というファイル名で作成されますので、これを /dev/sd02(boot1) 及び /dev/sd03(boot2) に書き込みます。/dev/sd03(boot2)はカーネルを書き換えた時に片方から起動できなくなっても、もう一方から起動できるようにするためのもので、とても便利です。$ xscsi -bl 0/2 /tmp/minix_sd $ xscsi -bl 0/3 /tmp/minix_sdここでの 0/2 または 0/3 は SCSIのID番号/パーティション番号 でブートパーティションを表します。
最後の後始末を行います。$ cd /usr/src $ make clean $ sync; sync; sync